package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author wk
 * @create 2021-08-24 19:13
 */
public interface ManagerService {

    List<BaseCategory1> getCategory1();

    List<BaseCategory2> getCategory2(Long category1Id);

    List<BaseCategory3> getCategory3(Long category2Id);

    List<BaseAttrInfo> attrInfoList(Long category1Id, Long category2Id, Long category3Id);

    void saveAttrInfo(BaseAttrInfo baseAttrInfo);

    List<BaseAttrValue> getAttrValueList(Long attrId);

    void updateAttrInfo(BaseAttrInfo baseAttrInfo);

    IPage baseTrademark(Integer page, Integer limit);

    void save(BaseTrademark baseTrademark);

    BaseTrademark get(Long id);

    void update(BaseTrademark baseTrademark);

    void remove(Long id) ;

    IPage getSpuPage(Integer page, Integer limit, Long category3Id);

    List<BaseTrademark> getTrademarkList();

    List<BaseSaleAttr> getSaleAttrList();

    void saveSpuInfo(SpuInfo spuInfo);

    IPage<SkuInfo> skuPageList(Integer page, Integer limit);

    List<SpuImage> getSpuImageList(Long spuId);

    List<SpuSaleAttr> getSpuSaleAttrList(Long spuId);

    void saveSkuInfo(SkuInfo skuInfo);

    void onSave(Long skuId);

    void cancelSale(Long skuId);

    SkuInfo getSkuInfo(Long skuId);

    BaseCategoryView getBaseCategoryView(Long category3Id);

    BigDecimal getSkuPrice(Long skuId);

    // 根据spuId，skuId 查询销售属性集合
    // 自定义SQL给属性添加@Param注解方便应用
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(@Param("skuId") Long skuId, @Param("spuId")Long spuId);

    // 根据spuId 查询不同销售属性值组合和库存id
    Map getSkuValueIdsMap(Long spuId);

    // 首页数据展示
    List<BaseCategoryView> getBaseCategoryViewList();

    // 获取品牌相关信息
    BaseTrademark getBaseTrademark(Long tmId);

    //获取库存的平台属性
    List<SkuAttrValue> getSkuAttrValue(Long skuId);

}
